package cn.pegasus.teamwork.manager.controller;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import cn.iyizhan.teamwork.base.util.PageObject;
import cn.pegasus.teamwork.manager.entity.SysUcenterApps;
import cn.pegasus.teamwork.manager.service.SysUcenterAppsService;
import cn.pegasus.teamwork.sysconfig.entity.SysConfigMessage;
import cn.pegasus.teamwork.sysconfig.entity.SysConfigSms;
import cn.pegasus.teamwork.sysconfig.mapper.SysConfigMessageMapper;
import cn.pegasus.teamwork.sysconfig.service.SysConfigMessageService;
import cn.pegasus.teamwork.sysconfig.service.SysConfigSmsService;
import cn.pegasus.teamwork.util.PushVO;

/**
 * @ClassName: SysConfigFilesController
 * @Description: 文件信息表
 * @author buyuer
 * @date 2015年11月26日 下午3:56:19
 * 
 */
@RequestMapping("/message/*")
@Controller
public class SysConfigMessageController extends BaseManagerController<SysConfigMessage, SysConfigMessageMapper>{
    private static final Logger LOGGER = LoggerFactory.getLogger(SysConfigMessageController.class);
    @Autowired
    private SysConfigMessageService sysConfigMessageService;
    @Autowired SysConfigSmsService sysConfigSmsService;
    @Autowired
    private SysUcenterAppsService appsService;
    /**
    * @Title: addMessage 
    * @Description:系统消息添加提交数据
    * @param map
    * @return    设定文件 
    * @return Map<String,Object>    返回类型 
    * @date 2015年12月18日 上午11:19:07 
    * @throws
     */
    @RequestMapping(value="/addMessageOk",method=RequestMethod.POST)
    @ResponseBody
    public Map<String,Object> addMessage(@RequestParam Map<String,Object> map){
    	 Map<String,Object> resultMap= new HashMap<String,Object>();
		try {
			if (!map.isEmpty()) {
				//获取配置文件的appsCode
				InputStream inputStream=SysConfigMessageController.class.getClassLoader().getResourceAsStream("config.properties");
				//生成properties对象
				Properties properties=new Properties();
				//将流添加到propertiesd对象里
				properties.load(inputStream);
				String appCode=properties.getProperty("app_code");
				if(null!=appCode&&!appCode.equals("")){
					//获取appId
					SysUcenterApps apps= appsService.findByCode(appCode);
					resultMap=sysConfigMessageService.addMessage(map, getAdmin().getId(),apps.getId(),1);
					//发送消息
					SysConfigMessage sysConfigMessage =(SysConfigMessage) resultMap.get("sysConfigMessage");
					//根据appCode获取PushVO
					PushVO push=new PushVO();
					push.init(appCode);
					System.out.println(sysConfigMessage.getId());
					sysConfigMessageService.pushMessage(appCode, sysConfigMessage.getId(), null,null, push.getMap(),null);
				}else{
					resultMap.put("status",-2);
				}
			}
		} catch (Exception e) {
			LOGGER.error("添加系统消息失败",e);
		}
    	return resultMap;
    }
    /**
    * @Title: msgList 
    * @Description:查询消息列表
    * @param map
    * @return    设定文件 
    * @return ModelAndView    返回类型 
    * @date 2015年12月18日 下午4:15:49 
    * @throws
     */
    @RequestMapping(value="msgList",method=RequestMethod.GET)
    public ModelAndView msgList(@RequestParam Map<String,Object> map){
    	ModelAndView mav = new ModelAndView("/system/message-list");
		try {
			if (map.isEmpty()) {
				map.put("curPage", 1);
				map.put("pageData", 10);
			}
			PageObject<SysConfigMessage> pageList=sysConfigMessageService.getMsgList(map);
			mav.addObject("pageList", pageList);
		} catch (Exception e) {
			LOGGER.error("查询消息列表失败", e);
		}
		return mav;
	}
    /**
    * @Title: addOrUpdate 
    * @Description:添加系统消息弹窗或者修改弹窗
    * @param map
    * @return    设定文件 
    * @return ModelAndView    返回类型 
    * @date 2015年12月19日 上午10:12:34 
    * @throws
     */
    @RequestMapping(value="/addOrUpdate",method=RequestMethod.GET)
    public ModelAndView addOrUpdate(@RequestParam Map<String,Object> map){
    	ModelAndView mav = new ModelAndView("/system/message-add");
    	//如果ID 不为空的时候是修改 反之是添加弹窗
		try {
			SysConfigMessage configMessage=new SysConfigMessage();
			if (null != map.get("id")) {
				// 获取这个消息的内容
				configMessage=	sysConfigMessageService.getSysConfigMessageInfo(Integer.valueOf(map.get("id").toString()));
				mav.addObject("msgInfo", configMessage);
			} else {
				mav.addObject("msgInfo", configMessage);
			}
		} catch (Exception e) {
			LOGGER.error("添加或者修改弹窗失败",e);
		}
    	return mav;
	}
    /**
    * @Title: updateMessagerOk 
    * @Description:修改系统数据提交 
    * @param map
    * @return    设定文件 
    * @return Map<String,Object>    返回类型 
    * @date 2015年12月19日 上午10:50:56 
    * @throws
     */
    @RequestMapping(value="/updateMessagerOk",method=RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> updateMessagerOk(@RequestParam Map<String,Object> map){
    	Map<String,Object> resultMap= new HashMap<String,Object>();
		try {
			if (!map.isEmpty()) {
				resultMap = sysConfigMessageService.updateMessageOk(map,getAdmin().getId());
			}
		} catch (Exception e) {
			LOGGER.error("修改系统消息失败", e);
			resultMap.put("status", -1);
		}
		return resultMap;
    }
    /**
     * @Title: updateMessagerOk 
     * @Description:修改系统数据提交 
     * @param map
     * @return    设定文件 
     * @return Map<String,Object>    返回类型 
     * @date 2015年12月19日 上午10:50:56 
     * @throws
      */
     @RequestMapping(value="/addMessgae",method=RequestMethod.POST)
     @ResponseBody
     public Map<String, Object> addMessgae(@RequestParam Map<String,Object> map){
     	Map<String,Object> resultMap= new HashMap<String,Object>();
 		try {
 			if (!map.isEmpty()) {
 				resultMap = sysConfigMessageService.addMessgae(map,getAdmin().getId());
 			}
 		} catch (Exception e) {
 			LOGGER.error("添加系统消息失败", e);
 			resultMap.put("status", -1);
 		}
 		return resultMap;
     }
    /**
    * @Title: delMessage 
    * @Description:删除消息
    * @param map
    * @return    设定文件 
    * @return Map<String,Object>    返回类型 
    * @date 2015年12月19日 上午11:40:44 
    * @throws
     */
    @RequestMapping(value="/delMessage",method=RequestMethod.GET)
    @ResponseBody
    public Map<String,Object> delMessage(@RequestParam Map<String,Object> map){
    	Map<String,Object> resultMap= new HashMap<String,Object>();
		try {
			if (null != map.get("id")) {
				resultMap=	sysConfigMessageService.delMessage(map);
			} else {
				resultMap.put("status", -2);
			}
		} catch (Exception e) {
			LOGGER.error("删除系统消息失败", e);
			resultMap.put("status", -1);
		}
    	return resultMap;
    }
    
    
	/**
	 * @Title: pageQuery
	 * @Description: TODO(分页查询手机验证码)
	 * @param map
	 * @return 设定文件
	 * @return ModelAndView 返回类型
	 * @date 2016年5月24日 上午14:17:40
	 * @throws
	 */
	@RequestMapping(value = "/pageQuerySysConfigSms")
	public ModelAndView pageQuerySysConfigSms(@RequestParam Map<String, Object> map) {
		ModelAndView  view = new ModelAndView("/system/sysconfigsms-list");
		try {
			if (null == map.get("curPage") || null == map.get("pageData")) {
				map.put("curPage", 1);
				map.put("pageData", 10);
			}
			// 分页查询
			PageObject<SysConfigSms> pageList = sysConfigSmsService.getPageSysConfigSms(map);
			view.addObject("pageIndex",(pageList.getCurPage()-1) * pageList.getPageData());
			view.addObject("phoneNumber",map.get("phoneNumber"));
			view.addObject("pageList", pageList);
			view.addObject("appId", map.get("appId"));
		} catch (Exception e) {
			LOGGER.error("分页查询验证码出错", e);
		}
		return view;
	}
}
